The Java.TM. programming and execution environment, created by Sun Microsystems, provides a popular way to write, distribute, and execute programs for many platforms. One of the attractive features in the Java.TM. execution environment is the built-in security system that enforces a set of security constraints on every program executed while in the execution environment. Through this mechanism, an execution environment can safely execute Java.TM. programs from unknown origins without risk of the program having adverse affects on the execution environment.
The enforcement of these security constraints places an added burden on the execution environment to execute the built-in security system because the set of security constraints is performed every time a class file is loaded into the execution environment, thus increasing time and power requirements. It is important to note that platforms with limited computing resources are especially sensitive to this added burden. For example, these security constraints are particularly troublesome in environments, such as web browsers, where computer-readable instruction streams are downloaded to the execution environment, but not permanently stored in the execution environment. Since the computer-readable instruction streams are not permanently stored in the execution environment, they have to be downloaded each time they are accessed, which adds the requirement for the verification process to be performed each time the computer-readable instruction streams are downloaded in the execution environment.
Thus, there exists a need for a method and apparatus that reduces the time and power requirements for executing computer-readable instruction streams in the execution environment having run-time security constraints while maintaining the safety of the execution environment executing computer-readable instruction streams from unknown origins without risk of the computer-readable instruction streams having adverse affects on the execution environment.